// 导入ComponentType类型定义
import { ComponentType } from './types/index';

/**
 * createPlaceholderMessage函数，用于生成组件的占位符消息
 * @param component 组件类型
 * @returns 返回对应组件的占位符字符串
 */
export function createPlaceholderMessage(component: ComponentType) {
  if (component === 'Input') return '请输入'; // 如果组件是Input，返回"请输入"
  if (
    ['Picker', 'Select', 'Checkbox', 'Radio', 'Switch', 'DatePicker', 'TimePicker'].includes(
      component,
    )
  )
    return '请选择'; // 如果组件是Picker, Select, Checkbox, Radio, Switch, DatePicker, TimePicker之一，返回"请选择"
  return ''; // 默认返回空字符串
}

// 定义一个包含日期类型组件的数组
const DATE_TYPE = ['DatePicker', 'MonthPicker', 'WeekPicker', 'TimePicker'];

/**
 * genType函数，用于生成包含日期类型组件的数组
 * @returns 返回一个新的数组，包含DATE_TYPE中的组件以及'RangePicker'
 */
function genType() {
  return [...DATE_TYPE, 'RangePicker']; // 返回包含DATE_TYPE和'RangePicker'的新数组
}

/**
 * dateItemType常量，包含日期类型组件的数组
 */
export const dateItemType = genType(); // 导出genType函数生成的数组

/**
 * defaultType函数，用于确定组件的默认类型
 * @param component 组件类型
 * @returns 返回对应组件的默认类型
 */
export function defaultType(component) {
  if (component === 'Input') return ''; // 如果组件是Input，返回空字符串
  if (component === 'InputNumber') return null; // 如果组件是InputNumber，返回null
  return ['Picker', 'Select', 'Checkbox', 'Radio', 'Switch', 'DatePicker', 'TimePicker'].includes(
    component,
  )
    ? ''
    : undefined; // 如果组件是列表中的一个，返回空字符串，否则返回undefined
}
